package main

import (
	"fmt"
	"io"
	"log"
	"net"
	"net/http"
)

func getOutboundIP() (string, error) {
	conn, err := net.Dial("udp", "8.8.8.8:80")
	if err != nil {
		return "", err
	}
	defer conn.Close()

	localAddr := conn.LocalAddr().(*net.UDPAddr)
	return localAddr.IP.String(), nil
}

func main() {
	// 尝试获取本机的非回环IP地址
	outboundIP, err := getOutboundIP()
	if err != nil {
		log.Fatalf("Error getting outbound IP: %v", err)
	}
	fmt.Printf("Outbound IP: %s\n", outboundIP)

	// 如果你的应用程序也是一个HTTP服务器，并且你绑定了特定的端口
	// 你可以在这里获取那个端口号
	// 假设服务器监听在8080端口
	serverPort := "8080"
	fmt.Printf("Server Port: %s\n", serverPort)

	// 指定要请求的URL
	url := "http://example.com"

	// 发送GET请求
	resp, err := http.Get(url)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close() // 确保关闭响应体

	// 读取响应体的内容
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}

	// 打印响应状态码和响应体内容
	fmt.Printf("Response Status: %s\n", resp.Status)
	fmt.Printf("Response Body: %s\n", body)
}
